uniform const float4x4 WorldView;
uniform const float4x4 WorldViewProjection;

uniform const float2 textureTiling = {1,1};

uniform const texture2D Texture;
uniform const texture2D NormalMap;
uniform const texture2D HeightMap;
uniform const texture2D AlphaMap;
uniform const texture2D SpecularMap;
uniform const texture2D Noise;
uniform const texture2D Emissive;
uniform const texture ReflectionMap;

samplerCUBE ReflectionSampler = sampler_state
{
    Texture = <ReflectionMap>;
    MinFilter = anisotropic;
    MinFilter = linear;
    MagFilter = linear;
    MipFilter = linear;
    AddressU = Clamp;
    AddressV = Clamp;
    AddressW = Clamp;
    MaxAnisotropy = 16;
};
sampler2D DiffuseTextureSampler = sampler_state
{
    Texture = <Texture>;
    MinFilter = linear;
    MagFilter = linear;
    MipFilter = linear;
    MipMapLODBias = 0;
    AddressU = WRAP;
    AddressV = WRAP;
    AddressW = WRAP;
};
sampler2D EmissiveTextureSampler = sampler_state
{
    Texture = <Emissive>;
    MinFilter = linear;
    MagFilter = linear;
    MipFilter = linear;
    MipMapLODBias = 0;
    AddressU = WRAP;
    AddressV = WRAP;
    AddressW = WRAP;
};
sampler2D NormalTextureSampler = sampler_state
{
    Texture = <NormalMap>;
    MinFilter = linear;
    MagFilter = linear;
    MipFilter = linear;
    MipMapLODBias = 0;
    AddressU = WRAP;
    AddressV = WRAP;
    AddressW = WRAP;
};


sampler2D AlphaTextureSampler = sampler_state
{
    Texture = <AlphaMap>;
    MinFilter = linear;
    MagFilter = linear;
    MipFilter = linear;
    MipMapLODBias = 0;
};


sampler2D NoiseTextureSampler = sampler_state
{
    Texture = <Noise>;
    MinFilter = linear;
    MagFilter = linear;
    MipFilter = linear;
};


sampler2D HeightTextureSampler = sampler_state
{
    Texture = <HeightMap>;
    MinFilter = linear;
    MagFilter = linear;
    MipFilter = linear;
    MipMapLODBias = 0;
};


sampler2D SpecularTextureSampler = sampler_state
{
    Texture = <SpecularMap>;
    MinFilter = linear;
    MagFilter = linear;
    MipFilter = linear;
    MipMapLODBias = 0;
};


struct PixelShaderOutput
{
    half4 Color : COLOR0;
    half4 Normal : COLOR1;
    half4 Depth : COLOR2;
    half4 Back: COLOR3;
};
